package com.example.victory.swagger.model;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.ArrayList;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;

/**
 * 客户信息
 */
@ApiModel(description = "客户信息")
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2021-04-26T10:50:39.083+08:00")

public class Customer   {
  @JsonProperty("id")
  private Integer id = null;

  @JsonProperty("types")
  @Valid
  private List<CustomerTypeName> types = null;

  @JsonProperty("name")
  private String name = null;

  @JsonProperty("imId")
  private String imId = null;

  @JsonProperty("gender")
  private GenderType gender = null;

  @JsonProperty("customerId")
  private String customerId = null;

  @JsonProperty("assetTotal")
  private Double assetTotal = null;

  @JsonProperty("marketValueTotal")
  private Double marketValueTotal = null;

  @JsonProperty("capitalMoney")
  private Double capitalMoney = null;

  @JsonProperty("productTotal")
  private Double productTotal = null;

  @JsonProperty("incomeContribution")
  private Double incomeContribution = null;

  @JsonProperty("commissionRate")
  private Double commissionRate = null;

  @JsonProperty("debtTotal")
  private Double debtTotal = null;

  @JsonProperty("collateralRatio")
  private Double collateralRatio = null;

  @JsonProperty("riskRating")
  private RiskRatingEnum riskRating = null;

  @JsonProperty("riskRatingName")
  private String riskRatingName = null;

  @JsonProperty("riskRatingDate")
  private String riskRatingDate = null;

  @JsonProperty("email")
  private String email = null;

  @JsonProperty("phone")
  private String phone = null;

  @JsonProperty("manager")
  private String manager = null;

  @JsonProperty("agent")
  private String agent = null;

  @JsonProperty("investmentConsultant")
  private String investmentConsultant = null;

  @JsonProperty("department")
  private String department = null;

  @JsonProperty("departmentId")
  private Integer departmentId = null;

  @JsonProperty("normalExchageActive")
  private Boolean normalExchageActive = null;

  @JsonProperty("creditExchageActive")
  private Boolean creditExchageActive = null;

  @JsonProperty("optionExchageActive")
  private Boolean optionExchageActive = null;

  @JsonProperty("otcExchageActive")
  private Boolean otcExchageActive = null;

  public Customer id(Integer id) {
    this.id = id;
    return this;
  }

  /**
   * 唯一序号id，分页查询时使用
   * @return id
  **/
  @ApiModelProperty(example = "1", value = "唯一序号id，分页查询时使用")


  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public Customer types(List<CustomerTypeName> types) {
    this.types = types;
    return this;
  }

  public Customer addTypesItem(CustomerTypeName typesItem) {
    if (this.types == null) {
      this.types = new ArrayList<CustomerTypeName>();
    }
    this.types.add(typesItem);
    return this;
  }

  /**
   * 客户关系类型队列
   * @return types
  **/
  @ApiModelProperty(value = "客户关系类型队列")

  @Valid

  public List<CustomerTypeName> getTypes() {
    return types;
  }

  public void setTypes(List<CustomerTypeName> types) {
    this.types = types;
  }

  public Customer name(String name) {
    this.name = name;
    return this;
  }

  /**
   * 姓名
   * @return name
  **/
  @ApiModelProperty(example = "张三", value = "姓名")


  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Customer imId(String imId) {
    this.imId = imId;
    return this;
  }

  /**
   * imId
   * @return imId
  **/
  @ApiModelProperty(example = "123456789", value = "imId")


  public String getImId() {
    return imId;
  }

  public void setImId(String imId) {
    this.imId = imId;
  }

  public Customer gender(GenderType gender) {
    this.gender = gender;
    return this;
  }

  /**
   * Get gender
   * @return gender
  **/
  @ApiModelProperty(value = "")

  @Valid

  public GenderType getGender() {
    return gender;
  }

  public void setGender(GenderType gender) {
    this.gender = gender;
  }

  public Customer customerId(String customerId) {
    this.customerId = customerId;
    return this;
  }

  /**
   * 客户号
   * @return customerId
  **/
  @ApiModelProperty(example = "880001472442", value = "客户号")


  public String getCustomerId() {
    return customerId;
  }

  public void setCustomerId(String customerId) {
    this.customerId = customerId;
  }

  public Customer assetTotal(Double assetTotal) {
    this.assetTotal = assetTotal;
    return this;
  }

  /**
   * 总资产，单位元
   * @return assetTotal
  **/
  @ApiModelProperty(example = "10000.01", value = "总资产，单位元")


  public Double getAssetTotal() {
    return assetTotal;
  }

  public void setAssetTotal(Double assetTotal) {
    this.assetTotal = assetTotal;
  }

  public Customer marketValueTotal(Double marketValueTotal) {
    this.marketValueTotal = marketValueTotal;
    return this;
  }

  /**
   * 证券市值，单位元
   * @return marketValueTotal
  **/
  @ApiModelProperty(example = "10000.01", value = "证券市值，单位元")


  public Double getMarketValueTotal() {
    return marketValueTotal;
  }

  public void setMarketValueTotal(Double marketValueTotal) {
    this.marketValueTotal = marketValueTotal;
  }

  public Customer capitalMoney(Double capitalMoney) {
    this.capitalMoney = capitalMoney;
    return this;
  }

  /**
   * 资金余额，单位元
   * @return capitalMoney
  **/
  @ApiModelProperty(example = "1.05", value = "资金余额，单位元")


  public Double getCapitalMoney() {
    return capitalMoney;
  }

  public void setCapitalMoney(Double capitalMoney) {
    this.capitalMoney = capitalMoney;
  }

  public Customer productTotal(Double productTotal) {
    this.productTotal = productTotal;
    return this;
  }

  /**
   * 产品市值，单位元
   * @return productTotal
  **/
  @ApiModelProperty(example = "1.05", value = "产品市值，单位元")


  public Double getProductTotal() {
    return productTotal;
  }

  public void setProductTotal(Double productTotal) {
    this.productTotal = productTotal;
  }

  public Customer incomeContribution(Double incomeContribution) {
    this.incomeContribution = incomeContribution;
    return this;
  }

  /**
   * 收入贡献，单位元
   * @return incomeContribution
  **/
  @ApiModelProperty(example = "1.05", value = "收入贡献，单位元")


  public Double getIncomeContribution() {
    return incomeContribution;
  }

  public void setIncomeContribution(Double incomeContribution) {
    this.incomeContribution = incomeContribution;
  }

  public Customer commissionRate(Double commissionRate) {
    this.commissionRate = commissionRate;
    return this;
  }

  /**
   * 佣金率，单位
   * @return commissionRate
  **/
  @ApiModelProperty(example = "0.05", value = "佣金率，单位")


  public Double getCommissionRate() {
    return commissionRate;
  }

  public void setCommissionRate(Double commissionRate) {
    this.commissionRate = commissionRate;
  }

  public Customer debtTotal(Double debtTotal) {
    this.debtTotal = debtTotal;
    return this;
  }

  /**
   * 总负债，单位元
   * @return debtTotal
  **/
  @ApiModelProperty(example = "10000.01", value = "总负债，单位元")


  public Double getDebtTotal() {
    return debtTotal;
  }

  public void setDebtTotal(Double debtTotal) {
    this.debtTotal = debtTotal;
  }

  public Customer collateralRatio(Double collateralRatio) {
    this.collateralRatio = collateralRatio;
    return this;
  }

  /**
   * 担保比例，单位
   * @return collateralRatio
  **/
  @ApiModelProperty(example = "0.05", value = "担保比例，单位")


  public Double getCollateralRatio() {
    return collateralRatio;
  }

  public void setCollateralRatio(Double collateralRatio) {
    this.collateralRatio = collateralRatio;
  }

  public Customer riskRating(RiskRatingEnum riskRating) {
    this.riskRating = riskRating;
    return this;
  }

  /**
   * Get riskRating
   * @return riskRating
  **/
  @ApiModelProperty(value = "")

  @Valid

  public RiskRatingEnum getRiskRating() {
    return riskRating;
  }

  public void setRiskRating(RiskRatingEnum riskRating) {
    this.riskRating = riskRating;
  }

  public Customer riskRatingName(String riskRatingName) {
    this.riskRatingName = riskRatingName;
    return this;
  }

  /**
   * 风险评级名称
   * @return riskRatingName
  **/
  @ApiModelProperty(example = "积极型", value = "风险评级名称")


  public String getRiskRatingName() {
    return riskRatingName;
  }

  public void setRiskRatingName(String riskRatingName) {
    this.riskRatingName = riskRatingName;
  }

  public Customer riskRatingDate(String riskRatingDate) {
    this.riskRatingDate = riskRatingDate;
    return this;
  }

  /**
   * 有效期
   * @return riskRatingDate
  **/
  @ApiModelProperty(example = "2019-1-1", value = "有效期")


  public String getRiskRatingDate() {
    return riskRatingDate;
  }

  public void setRiskRatingDate(String riskRatingDate) {
    this.riskRatingDate = riskRatingDate;
  }

  public Customer email(String email) {
    this.email = email;
    return this;
  }

  /**
   * 电子邮件
   * @return email
  **/
  @ApiModelProperty(example = "test@tom.com", value = "电子邮件")


  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public Customer phone(String phone) {
    this.phone = phone;
    return this;
  }

  /**
   * 手机号码
   * @return phone
  **/
  @ApiModelProperty(example = "13488889999", value = "手机号码")


  public String getPhone() {
    return phone;
  }

  public void setPhone(String phone) {
    this.phone = phone;
  }

  public Customer manager(String manager) {
    this.manager = manager;
    return this;
  }

  /**
   * 客户经理
   * @return manager
  **/
  @ApiModelProperty(example = "张三", value = "客户经理")


  public String getManager() {
    return manager;
  }

  public void setManager(String manager) {
    this.manager = manager;
  }

  public Customer agent(String agent) {
    this.agent = agent;
    return this;
  }

  /**
   * 经纪人
   * @return agent
  **/
  @ApiModelProperty(example = "李四", value = "经纪人")


  public String getAgent() {
    return agent;
  }

  public void setAgent(String agent) {
    this.agent = agent;
  }

  public Customer investmentConsultant(String investmentConsultant) {
    this.investmentConsultant = investmentConsultant;
    return this;
  }

  /**
   * 投资顾问
   * @return investmentConsultant
  **/
  @ApiModelProperty(example = "李四", value = "投资顾问")


  public String getInvestmentConsultant() {
    return investmentConsultant;
  }

  public void setInvestmentConsultant(String investmentConsultant) {
    this.investmentConsultant = investmentConsultant;
  }

  public Customer department(String department) {
    this.department = department;
    return this;
  }

  /**
   * 所属营业部
   * @return department
  **/
  @ApiModelProperty(example = "北京营业部", value = "所属营业部")


  public String getDepartment() {
    return department;
  }

  public void setDepartment(String department) {
    this.department = department;
  }

  public Customer departmentId(Integer departmentId) {
    this.departmentId = departmentId;
    return this;
  }

  /**
   * 所属营业部ID
   * @return departmentId
  **/
  @ApiModelProperty(example = "1201", value = "所属营业部ID")


  public Integer getDepartmentId() {
    return departmentId;
  }

  public void setDepartmentId(Integer departmentId) {
    this.departmentId = departmentId;
  }

  public Customer normalExchageActive(Boolean normalExchageActive) {
    this.normalExchageActive = normalExchageActive;
    return this;
  }

  /**
   * 是否开通普通交易
   * @return normalExchageActive
  **/
  @ApiModelProperty(example = "true", value = "是否开通普通交易")


  public Boolean isNormalExchageActive() {
    return normalExchageActive;
  }

  public void setNormalExchageActive(Boolean normalExchageActive) {
    this.normalExchageActive = normalExchageActive;
  }

  public Customer creditExchageActive(Boolean creditExchageActive) {
    this.creditExchageActive = creditExchageActive;
    return this;
  }

  /**
   * 是否开通信用交易
   * @return creditExchageActive
  **/
  @ApiModelProperty(example = "true", value = "是否开通信用交易")


  public Boolean isCreditExchageActive() {
    return creditExchageActive;
  }

  public void setCreditExchageActive(Boolean creditExchageActive) {
    this.creditExchageActive = creditExchageActive;
  }

  public Customer optionExchageActive(Boolean optionExchageActive) {
    this.optionExchageActive = optionExchageActive;
    return this;
  }

  /**
   * 是否开通期权交易
   * @return optionExchageActive
  **/
  @ApiModelProperty(example = "true", value = "是否开通期权交易")


  public Boolean isOptionExchageActive() {
    return optionExchageActive;
  }

  public void setOptionExchageActive(Boolean optionExchageActive) {
    this.optionExchageActive = optionExchageActive;
  }

  public Customer otcExchageActive(Boolean otcExchageActive) {
    this.otcExchageActive = otcExchageActive;
    return this;
  }

  /**
   * 是否开通otc交易
   * @return otcExchageActive
  **/
  @ApiModelProperty(example = "true", value = "是否开通otc交易")


  public Boolean isOtcExchageActive() {
    return otcExchageActive;
  }

  public void setOtcExchageActive(Boolean otcExchageActive) {
    this.otcExchageActive = otcExchageActive;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    Customer customer = (Customer) o;
    return Objects.equals(this.id, customer.id) &&
        Objects.equals(this.types, customer.types) &&
        Objects.equals(this.name, customer.name) &&
        Objects.equals(this.imId, customer.imId) &&
        Objects.equals(this.gender, customer.gender) &&
        Objects.equals(this.customerId, customer.customerId) &&
        Objects.equals(this.assetTotal, customer.assetTotal) &&
        Objects.equals(this.marketValueTotal, customer.marketValueTotal) &&
        Objects.equals(this.capitalMoney, customer.capitalMoney) &&
        Objects.equals(this.productTotal, customer.productTotal) &&
        Objects.equals(this.incomeContribution, customer.incomeContribution) &&
        Objects.equals(this.commissionRate, customer.commissionRate) &&
        Objects.equals(this.debtTotal, customer.debtTotal) &&
        Objects.equals(this.collateralRatio, customer.collateralRatio) &&
        Objects.equals(this.riskRating, customer.riskRating) &&
        Objects.equals(this.riskRatingName, customer.riskRatingName) &&
        Objects.equals(this.riskRatingDate, customer.riskRatingDate) &&
        Objects.equals(this.email, customer.email) &&
        Objects.equals(this.phone, customer.phone) &&
        Objects.equals(this.manager, customer.manager) &&
        Objects.equals(this.agent, customer.agent) &&
        Objects.equals(this.investmentConsultant, customer.investmentConsultant) &&
        Objects.equals(this.department, customer.department) &&
        Objects.equals(this.departmentId, customer.departmentId) &&
        Objects.equals(this.normalExchageActive, customer.normalExchageActive) &&
        Objects.equals(this.creditExchageActive, customer.creditExchageActive) &&
        Objects.equals(this.optionExchageActive, customer.optionExchageActive) &&
        Objects.equals(this.otcExchageActive, customer.otcExchageActive);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, types, name, imId, gender, customerId, assetTotal, marketValueTotal, capitalMoney, productTotal, incomeContribution, commissionRate, debtTotal, collateralRatio, riskRating, riskRatingName, riskRatingDate, email, phone, manager, agent, investmentConsultant, department, departmentId, normalExchageActive, creditExchageActive, optionExchageActive, otcExchageActive);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class Customer {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    types: ").append(toIndentedString(types)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    imId: ").append(toIndentedString(imId)).append("\n");
    sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
    sb.append("    customerId: ").append(toIndentedString(customerId)).append("\n");
    sb.append("    assetTotal: ").append(toIndentedString(assetTotal)).append("\n");
    sb.append("    marketValueTotal: ").append(toIndentedString(marketValueTotal)).append("\n");
    sb.append("    capitalMoney: ").append(toIndentedString(capitalMoney)).append("\n");
    sb.append("    productTotal: ").append(toIndentedString(productTotal)).append("\n");
    sb.append("    incomeContribution: ").append(toIndentedString(incomeContribution)).append("\n");
    sb.append("    commissionRate: ").append(toIndentedString(commissionRate)).append("\n");
    sb.append("    debtTotal: ").append(toIndentedString(debtTotal)).append("\n");
    sb.append("    collateralRatio: ").append(toIndentedString(collateralRatio)).append("\n");
    sb.append("    riskRating: ").append(toIndentedString(riskRating)).append("\n");
    sb.append("    riskRatingName: ").append(toIndentedString(riskRatingName)).append("\n");
    sb.append("    riskRatingDate: ").append(toIndentedString(riskRatingDate)).append("\n");
    sb.append("    email: ").append(toIndentedString(email)).append("\n");
    sb.append("    phone: ").append(toIndentedString(phone)).append("\n");
    sb.append("    manager: ").append(toIndentedString(manager)).append("\n");
    sb.append("    agent: ").append(toIndentedString(agent)).append("\n");
    sb.append("    investmentConsultant: ").append(toIndentedString(investmentConsultant)).append("\n");
    sb.append("    department: ").append(toIndentedString(department)).append("\n");
    sb.append("    departmentId: ").append(toIndentedString(departmentId)).append("\n");
    sb.append("    normalExchageActive: ").append(toIndentedString(normalExchageActive)).append("\n");
    sb.append("    creditExchageActive: ").append(toIndentedString(creditExchageActive)).append("\n");
    sb.append("    optionExchageActive: ").append(toIndentedString(optionExchageActive)).append("\n");
    sb.append("    otcExchageActive: ").append(toIndentedString(otcExchageActive)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

